﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Configuration;
using ENProyecto7;

namespace WebProyectoSIETE
{
    public partial class registroUsuario : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["usuario"] != null && Session["usuario"].ToString() != "")
            {
                Response.Redirect("~/Default.aspx");
            }
            if (Session["noRegistrado"] != null && Session["noRegistrado"].ToString() == "a")
            {
                lbError.Visible = true;
                Session["noRegistrado"] = "b";
            }
            mvRegistro.ActiveViewIndex = 0;

            DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);

            lbAtaque.Text = dv.Table.Rows[0][2].ToString();
            lbVida.Text = dv.Table.Rows[0][3].ToString();
            lbDefensa.Text = dv.Table.Rows[0][4].ToString();
            lbNombrePersonaje.Text = dv.Table.Rows[0][1].ToString();
        }

        // boton para comrpobar que todos los campos sean correctos, en caso afirmativo pasamos a la siguiente pagina
        // del multiview
        protected void btnSiguiente_Click(object sender, EventArgs e)
        {
            bool correcto = true;
            
            //comprobar contraseñas (longitud y iguales)
            if (tbPass.Text.ToString().Length < 3)
            {
                cvPass.IsValid = false;
                cvPass.ErrorMessage = "La contraseña es demasiado corta";
                correcto = false;
            }
            else
            {
                if (tbPass.Text != tbPass2.Text)
                {
                    cvPass.IsValid = false;
                    cvPass.ErrorMessage = "Las contraseñas no coinciden";
                    correcto = false;
                }
            }
            //comprobar que el nombre de usuario no este repetido
            //SqlConnection conexion = null;
            try
            {
                // creamos la conexion con la BD

                /*conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["cadenaConexion"].ConnectionString);
                conexion.Open();*/

                // creamos la query y la ejecutamos
                //SqlCommand comando = new SqlCommand("select nombreUsuario from Usuario where nombreUsuario='" + tbNombre.Text.ToString() + "'", conexion);
                ENUsuario usuarioEN = new ENUsuario();
                string query = "select nombreUsuario from Usuario where nombreUsuario='" + tbNombre.Text.ToString() + "'";
                SqlDataReader dr = usuarioEN.comprobarNombreUsuario(query);

                // tratamos los resultados
                if (dr.HasRows)
                {
                    cvNombreRepetido.IsValid = false;
                    cvNombreRepetido.Text = "El nombre de usuario ya existe";
                    correcto = false;
                }

                // cerramos la conexion
                //conexion.Close();
            }
            catch (Exception ex)
            {
                cvNombreRepetido.IsValid = false;
                cvNombreRepetido.Text = "Error, por favor vuelva a intentarlo. ";
                correcto = false;
            }
            finally 
            {
                //conexion.Close();
            }
                                   
            //si todo ha ido OK
          if (correcto){
               mvRegistro.ActiveViewIndex = 1;
               hfPass.Value = tbPass.Text.ToString();
          }
        }

        // evento de cambio para actualizar la 2º pagina del multiview
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);

            lbAtaque.Text = dv.Table.Rows[int.Parse(ddlElegirPersonaje.SelectedIndex.ToString())][2].ToString();
            lbVida.Text = dv.Table.Rows[int.Parse(ddlElegirPersonaje.SelectedIndex.ToString())][3].ToString();
            lbDefensa.Text = dv.Table.Rows[int.Parse(ddlElegirPersonaje.SelectedIndex.ToString())][4].ToString();
            lbNombrePersonaje.Text = dv.Table.Rows[int.Parse(ddlElegirPersonaje.SelectedIndex.ToString())][1].ToString();
            mvRegistro.ActiveViewIndex = 1;


        }

        // boton para volver a la pagina anterior del multi view
        protected void btnVolver_Click(object sender, EventArgs e) {
            mvRegistro.ActiveViewIndex = 0;
        
        }

        // boton para insertar al usuario en la BD
        protected void btnRegistro_Click(object sender, EventArgs e)
        {
            try
            {
                sdsRegistro.InsertCommand = "INSERT INTO Usuario(nombreUsuario, claveUsuario, personajeUsuario, correoUsuario) VALUES ('" + tbNombre.Text.ToString() + "', '" + hfPass.Value.ToString() +"', " + int.Parse(ddlElegirPersonaje.SelectedValue.ToString()) + ", '" + tbMail.Text.ToString() + "')";
                sdsRegistro.Insert();
                Response.Redirect("/Default.aspx");
            }
            catch(Exception ex) {
                Response.Redirect("~/Ranking.aspx");
            }

        }

    }
}